Documentación de Base de Datos del Sistema Apollo

1. Resumen de Estructura

El sistema cuenta con 35 tablas principales organizadas en el esquema public. No se detectaron schemas adicionales de negocio.

Extensiones Activas

  • uuid-ossp: Generación de IDs únicos.
  • pgcrypto: Cifrado de columnas sensibles.
  • pg_trgm: Optimización de búsquedas de texto.

2. Tablas Principales por Módulo

2.1 Módulo de Usuarios (Core)

Tablas relacionadas con la gestión de cuentas y seguridad.

  • users: Tabla maestra. Contiene credenciales (hash), estado y tokens de recuperación.
  • PK: id (UUID)
  • Índices clave: email, status_id.
  • profile: Información extendida (Bio, foto, ubicación). Relación 1:1 con users.
  • roles: Catálogo de roles (Admin, Tutor, Student).
  • user_roles: Tabla pivote para asignar múltiples roles a un usuario.
  • user_status: Catálogo de estados (Active, Banned, Pending).

2.2 Módulo de Tutores

Información específica para el rol de proveedor de servicios.

  • tutor_profile: Datos profesionales (Tarifa hora, video presentación). Relación 1:1 con users.
  • tutor_services: Servicios específicos ofertados (ej. “Clase de Matemáticas”).
  • topics / subtopics: Categorización jerárquica de áreas de conocimiento.
  • professional_topics: Relación de competencias del tutor con los temas.
  • tutor_documents / tutor_certificates: Repositorio de evidencias profesionales (Diplomas, Cédula).

2.3 Módulo de Agendamiento

Gestión del tiempo y encuentros.

  • availability: Bloques de tiempo disponibles configurados por el tutor.
  • sessions: Registro central de la tutoría pactada.
  • Campos clave: start_date, end_date, meeting_link, status_id.
  • sessions_history: Bitácora de cambios de estado de la sesión (Auditoría).
  • session_status: Catálogo de estados de sesión (Pending, Confirmed, Completed, Cancelled).

2.4 Módulo Financiero

Gestión de transacciones monetarias.

  • payments: Registro de entradas de dinero (Pagos de estudiantes).
  • Campos clave: amount, commission, transaction_id.
  • invoices: Documentos de facturación generados.
  • withdrawals: Solicitudes de retiro de fondos de los tutores.
  • tutor_bank_details: Cuentas bancarias verificadas para desembolsos.
  • currencies: Catálogo de monedas soportadas (COP, USD).

2.5 Tablas de Sistema y Auditoría

  • app_settings: Configuración dinámica (feature flags, porcentajes de comisión).
  • audit_log: Registro de actividad general del sistema.
  • deletion_audit_log: Registro específico de intentos de borrado de datos.
  • notifications: Cola de notificaciones para usuarios.
  • schema_migrations: Control de versiones de la base de datos (Knex/Sequelize/Custom).

3. Diagrama Entidad-Relación Detallado (ERD)

A continuación se presenta el modelo relacional detallado con las principales tablas, sus atributos clave (PK/FK) y tipos de datos esenciales.


4. Detalles de Integridad

  • Identificadores: Se utiliza UUID v4 en todas las tablas transaccionales para seguridad y escalabilidad.
  • Foreign Keys: Integridad referencial fuerte (Restrict/Cascade) en todas las relaciones principales.

Auditoría

  • Campos created_at y updated_at presentes en el 100% de las tablas


Despliegue en local

Esta documentación detalla los componentes del sistema Apollo, cómo ejecutarlo correctamente en un entorno local y la estructura de su base de datos.

Guía de Ejecución Local (Local Setup)

Para levantar el sistema completo, se deben iniciar los servicios en el siguiente orden: Base de Datos -> API -> Frontend.

Requisitos Previos

  • Docker y Docker Compose
  • Make (opcional, pero recomendado)

1. Base de Datos (apollo-service-db)

El servicio de base de datos PostgreSQL debe iniciarse primero ya que define la red compartida apollo_network.

cd apollo-service-db
make upi       # Levanta el contenedor en segundo plano (detached)
make migrate   # Ejecuta las migraciones para crear las tablas

Verificación:

  • El contenedor apollo-db debe estar corriendo (puerto 5432).
  • Debe existir la red apollo_network.

2. Backend API (apollo-service-api)

Configuración Previa (.env): Asegúrate de que el archivo .env apunte al nombre del contenedor de la base de datos y no a una IP remota.

DB_HOST=apollo-db
DB_NAME=apollo_db
POSTGRES_DB=apollo_db

Api Service (apollo-service-api)

Configuración Previa (src/app.js):

// Configuraciones de la app
const allowedOrigins = [
  'http://localhost:4200',
  'http://localhost:3000',
  'http://localhost:4001',  //agregar puerto 4001
  'https://apolloasesorias.com',
  'https://www.apolloasesorias.com',
  'https://qa.apolloasesorias.com',
  'https://www.qa.apolloasesorias.com',
  'https://api.apolloasesorias.com',
  'https://api-qa.apolloasesorias.com'
];


Configuración Previa ultimas lineas de docker-compose.yml para agregar en la misma red docke (pegar desde la linea 60).

networks:

  • dokploy-network
  • apollo_network #Se añade esta linea para agregar a network docker

networks:

dokploy-network:
external: true
apollo_network: #Se añade esta linea para agregar a network docker
external: true #Se añade esta linea para agregar a network docker

Ejecución: Es crítico usar docker compose up --build para asegurar que la API se conecte a la red correcta (apollo_network) y tenga los orígenes CORS actualizados.

cd apollo-service-api
# Asegura que el docker-compose.yml tenga 'networks: - apollo_network'
docker-compose up -d --build

Notas Importantes:

  • La API corre en el puerto 4000.
  • Logs importantes: docker logs -f apollo-api

3. Frontend Web App (apollo-service-app)

Configuración Previa (src/environments/environment.ts): El frontend debe apuntar a la API local, no a QA.

**export** **const** environment = {
production: **false**,
apiUrl: "http://localhost:4000/api", *// Asegurar este valor*
*// ...*
};

Ejecución:

cd apollo-service-app
docker compose up -d --build

Acceso:

Estructura de Base de Datos

El sistema utiliza PostgreSQL. A continuación se listan las tablas principales del esquema public:

Usuarios y Perfiles

  • users: Tabla central de autenticación (ID, email, password hash).
  • roles: Roles del sistema (admin, tutor, user).
  • user_roles: Relación N:M entre usuarios y roles.
  • profile: Información básica del perfil (nombre, ciudad, biografía).
  • tutor_profile: Información específica para tutores (tarifa, experiencia).
  • user_status: Estados de cuenta (active, suspended, etc.).

Sesiones y Tutorías

  • sessions: Registro de clases/sesiones agendadas.
  • session_status: Estados de una sesión (scheduled, completed, cancelled).
  • sessions_history: Histórico de cambios en sesiones.
  • availability: Horarios disponibles de los tutores.

Académico

  • topics: Materias principales/Áreas de conocimiento.
  • subtopics: Sub-materias específicas.
  • tutor_services: Servicios ofrecidos por el tutor.
  • tutor_service_subtopics: Relación de servicios con temas específicos.

Pagos y Facturación

  • payments: Registro de transacciones.
  • invoices: Facturas generadas.
  • payment_methods: Métodos de pago guardados.
  • withdrawals: Solicitudes de retiro de dinero (para tutores).
  • tutor_bank_details: Datos bancarios de tutores.

Sistema y Configuración

  • app_settings: Configuraciones globales.
  • notifications: Notificaciones para usuarios.
  • audit_log / deletion_audit_log: Logs de auditoría y seguridad.
  • schema_migrations: Control de versiones de migraciones.

Credenciales de Acceso (Entorno Local)

Administrador

Usuario Estudiante

Tutor

Error de migración que impide el inicio de sesión:

Al intentar ingresar al sistema con las credenciales, aparece un error de contraseña incorrecta. Esto se debe a un problema en la migración actual del sistema. Para probar el sistema, dirígete a https://qa.apolloasesorias.com/ , donde el sistema valida correctamente la contraseña.

Documentación de Módulos del Sistema Apollo

Este documento presenta un desglose técnico y funcional de los módulos que componen la plataforma Apollo.

1. Módulos del Núcleo (Core)

Estos módulos son la base del funcionamiento del sistema y gestionan aspectos transversales.

1.1 Gestión de Usuarios y Autenticación

Encargado de la seguridad, registro y perfiles de los actores del sistema.

  • API Modules: auth, users, roles, profiles.
  • Database Tables: users, roles, user_roles, profile.
  • Frontend:
  • Páginas: login, register, forgot-password.
  • Dashboard: Perfil de usuario (en student y tutor).
  • Funcionalidades:
  • Login/Registro (Email y Google OAuth).
  • Recuperación de contraseña.
  • Gestión de roles (RBAC).

1.2 Configuración del Sistema

Gestión de variables globales y ajustes de la plataforma.

  • API Modules: app-settings.
  • Database Tables: app_settings.
  • Frontend: Dashboard de Admin (admin/settings - inferido).
  • Funcionalidades:
  • Control de comisiones.
  • Feature flags (activar/desactivar pasarelas).
  • Parámetros de negocio (precios mínimos, monedas).

2. Módulo de Tutores y Servicios

Corazón de la oferta de valor de Apollo. Gestiona la información de los expertos y lo que ofrecen.

2.1 Perfil Profesional

  • API Modules: tutors, topics, documents.
  • Database Tables: tutor_profile, topics, subtopics, tutor_documents, professional_topics.
  • Frontend:
  • Páginas: tutor-profile (público).
  • Dashboard: tutor/profile, tutor/services.
  • Funcionalidades:
  • Carga de video de presentación.
  • Gestión de áreas de conocimiento (Topics).
  • Verificación de documentos (Cédula, Diplomas).

2.2 Disponibilidad y Agenda

  • API Modules: availability.
  • Database Tables: availability, availability_status.
  • Frontend: tutor/availability (Calendario interactivo).
  • Funcionalidades:
  • Configuración de slots horarios disponibles.
  • Bloqueo de horarios (vacaciones, ocupado).

3. Módulo de Sesiones y Clases

Gestiona el ciclo de vida de la interacción educativa.

3.1 Gestión de Sesiones

  • API Modules: sessions, video-calls.
  • Database Tables: sessions, session_status, sessions_history.
  • Frontend:
  • Dashboard: student/sessions, tutor/sessions.
  • Página: video-call/:id.
  • Funcionalidades:
  • Solicitud y confirmación de clases.
  • Historial de estados (Pendiente -> Confirmada -> Completada).
  • Sala de video conferencia integrada.

3.2 Calificaciones

  • API Modules: ratings.
  • Database Tables: ratings.
  • Frontend: Componentes de valoración en perfil y post-sesión.
  • Funcionalidades:
  • Rating de 1 a 5 estrellas.
  • Reseñas escritas.
  • Cálculo de promedios para reputación del tutor.

4. Módulo Financiero

Gestiona el flujo de dinero entre estudiantes, plataforma y tutores.

4.1 Pagos y Facturación

  • API Modules: payments.
  • Database Tables: payments, invoices, payment_methods, payment_status.
  • Frontend: payment-success, payment-cancel, Dashboard Financiero.
  • Funcionalidades:
  • Procesamiento de pagos de estudiantes.
  • Generación de invoices/recibos.
  • Cálculo de comisiones de la plataforma.

4.2 Billetera y Retiros

  • API Modules: withdrawals.
  • Database Tables: withdrawals, tutor_bank_details.
  • Frontend: tutor/wallet (Billetera).
  • Funcionalidades:
  • Visualización de saldo acumulado.
  • Registro de cuentas bancarias.
  • Solicitud y aprobación de retiros.

5. Módulos Transversales

5.1 Búsqueda (Search)

  • API Modules: search.
  • Database Tables: Índices Full-Text Search en users y topics.
  • Frontend: Página search (Buscador principal).
  • Funcionalidades:
  • Filtros avanzados (precio, valoración, tema).
  • Búsqueda por palabras clave.

5.2 Notificaciones

  • API Modules: notifications.
  • Database Tables: notifications.
  • Frontend: Componente de campana de notificaciones en el Header.
  • Funcionalidades:
  • Avisos en tiempo real (Socket.io / GetStream).
  • Emails transaccionales (confirmación de cita, pago exitoso).


Documentación de Negocio del Sistema Apollo

Este documento describe el modelo de negocio, los procesos operativos y la estructura funcional de la plataforma Apollo, diseñada para conectar a estudiantes con tutores expertos.

1. Resumen Ejecutivo

Apollo es una plataforma de “marketplace” de servicios educativos que facilita la conexión entre personas que buscan aprender (Estudiantes) y expertos dispuestos a enseñar (Tutores). El sistema gestiona todo el ciclo de vida de la tutoría: desde la búsqueda y agendamiento, hasta la realización de la video llamada y el procesamiento seguro de los pagos.

2. Modelo de Negocio

El modelo de negocio de Apollo se basa en la intermediación de servicios educativos con un esquema de comisiones por transacción.

2.1 Propuesta de Valor

  • Para el Estudiante: Acceso centralizado a una amplia red de tutores verificados en diversas áreas de conocimiento (Software, Idiomas, Ciencias, etc.), con herramientas integradas de agenda y video conferencia.
  • Para el Tutor: Una plataforma profesional para ofrecer sus servicios, gestionar su disponibilidad, automatizar el cobro y construir una reputación digital verificable.

2.2 Fuentes de Ingresos

La principal fuente de ingresos es el cobro de comisiones por cada sesión de tutoría completada exitosamente.

  • Comisión por Transacción: La plataforma retiene un porcentaje (configurado por defecto en el sistema al 10%) del valor total de cada sesión pagada por el estudiante.
  • Gestión de Retiros: Los tutores acumulan saldo en la plataforma y pueden solicitar retiros a sus cuentas bancarias, proceso que también puede conllevar tarifas administrativas configurables.

3. Actores y Roles del Sistema

El sistema identifica cuatro roles principales con permisos y responsabilidades diferenciadas:

3.1 Estudiante (Usuario Regular)

Es el usuario final que consume los servicios.

  • Capacidades:
  • Búsqueda avanzada de tutores por tema, precio y calificación.
  • Visualización de perfiles detallados y disponibilidad.
  • Reserva y pago de sesiones.
  • Acceso a historial de sesiones y materiales compartidos.
  • Calificación y reseña del servicio recibido.

3.2 Tutor

Expertos que ofrecen servicios educativos.

  • Onboarding: Proceso riguroso de registro que incluye carga de documentos de identidad, certificados profesionales y video de presentación.
  • Capacidades:
  • Gestión de perfil profesional (bio, experiencia, tarifa por hora).
  • Creación de servicios específicos (ej. “Clase de Java Avanzado”, “Asesoría de Tesis”).
  • Configuración de disponibilidad horaria flexible.
  • Gestión de solicitudes de sesión (aceptar/rechazar).
  • Panel financiero para ver ganancias y solicitar retiros.

3.3 Administrador

Responsable de la gestión técnica y operativa total de la plataforma.

  • Capacidades:
  • Gestión global de usuarios (bloqueos, reactivaciones).
  • Configuración de parámetros del sistema (comisiones, pasarelas de pago).
  • Supervisión de transacciones financieras y auditoría.

3.4 Moderador

Rol enfocado en la calidad y seguridad de la comunidad.

  • Capacidades:
  • Verificación de documentos y perfiles de tutores nuevos.
  • Aprobación de videos de presentación.
  • Resolución de disputas básicas y moderación de contenido.

4. Procesos Core del Negocio

4.1 Ciclo de Vida de la Tutoría

  1. Búsqueda: El estudiante localiza un tutor mediante filtros de especialidad o subespecialidad.
  2. Solicitud: El estudiante selecciona un horario disponible y solicita la sesión.
  3. Confirmación y Pago: El pago se procesa por adelantado y queda en custodia (escrow) o en estado “pendiente”.
  4. Ejecución: En la fecha programada, ambos usuarios se conectan a través de la sala de video integrada en la plataforma.
  5. Finalización y Liberación: Al concluir la sesión, el estado cambia a completado. El estudiante califica al tutor y los fondos (menos la comisión) se liberan a la billetera virtual del tutor.

4.2 Verificación de Confianza

Para garantizar la calidad, Apollo implementa un sistema de validación:

  • Validación de identidad mediante documentos oficiales.
  • Verificación de antecedentes académicos o certificados cargados.
  • Aprobación manual de perfiles antes de que sean públicos en el buscador.

4.3 Gestión Financiera

  • Pasarelas de Pago: Integración con múltiples proveedores (PayPal, Tarjetas de Crédito, PSE/Nequi según disponibilidad regional) para facilitar el pago del estudiante.
  • Billetera del Tutor: Los tutores visualizan su saldo en tiempo real.
  • Retiros: Los tutores registran cuentas bancarias para solicitar la transferencia de sus ganancias acumuladas.

5. Áreas de Conocimiento

La plataforma está diseñada para ser multi-disciplinaria. Actualmente, su estructura soporta categorías jerárquicas:

  • Temas (Topics): Grandes áreas como Desarrollo de Software, Matemáticas, Idiomas.
  • Subtemas (Subtopics): Especialidades como Frontend, Cálculo Diferencial, Inglés de Negocios.

Esta estructura permite escalar la oferta académica sin límites técnicos, adaptándose a la demanda del mercado.

Documentación Técnica del Sistema Apollo

Este documento detalla la arquitectura, componentes y tecnologías utilizadas en el sistema Apollo, una plataforma de tutorías y asesorías académicas.

1. Visión General de la Arquitectura

El sistema Apollo sigue una arquitectura de microservicios o servicios distribuidos, separando claramente la base de datos, el backend (API) y el frontend (App).


2. Componentes del Sistema

2.1 Base de Datos (apollo-service-db)

El sistema utiliza PostgreSQL como motor de base de datos relacional. Se utilizan extensiones avanzadas para funcionalidades específicas.

  • Motor: PostgreSQL
  • Gestión de Migraciones: Scripts personalizados en Node.js (migrate.js) y archivos SQL crudos.
  • Extensiones Activas:
  • uuid-ossp: Para generación de identificadores únicos (UUID v4).
  • pgcrypto: Para encriptación de datos sensibles a nivel de base de datos.
  • pg_trgm: Para búsquedas de texto eficientes (trigramas).

Esquema de Base de Datos (Principales Tablas)

El esquema es extenso y cubre todos los aspectos del negocio. A continuación se destacan los módulos principales:

  • Usuarios y Autenticación:
  • users: Tabla central. Almacena credenciales, estados y tokens.
  • roles: Definición de roles (user, tutor, admin, moderator).
  • user_roles: Relación muchos a muchos para asignación de roles.
  • profile: Información extendida del usuario (bio, ubicación, género).
  • Tutores y Servicios:
  • tutor_profile: Información específica de tutores (tarifa, experiencia, video).
  • tutor_services: Servicios ofrecidos por el tutor (precio, duración).
  • topics / subtopics: Categorización de las áreas de conocimiento (ej. Software -> Backend).
  • availability: Gestión de horarios disponibles.
  • Sesiones y Pagos:
  • sessions: Registro de las tutorías agendadas, estados (pendiente, confirmada, completada).
  • payments: Registro transaccional de pagos.
  • invoices: Facturación generada.
  • withdrawals: Solicitudes de retiro de fondos por parte de los tutores.
  • Sistema:
  • audit_log: Trazabilidad de acciones críticas.
  • notifications: Sistema de notificaciones internas.
  • app_settings: Configuración dinámica de la plataforma (comisiones, feature flags).

2.2 Backend API (apollo-service-api)

API RESTful construida con Node.js y Express.

  • Framework: Express 4.18
  • Lenguaje: JavaScript (CommonJS)
  • Seguridad:
  • helmet (implícito o recomendado), cors para gestión de orígenes.
  • jsonwebtoken (JWT) para autenticación stateless.
  • bcrypt para hashing de contraseñas.
  • passport para estrategias de autenticación (Google OAuth).
  • Patrón de Diseño: Arquitectura en Capas (Layered Architecture).
  • Controller: Maneja la petición HTTP, valida entrada básica y llama al servicio (users.controller.js).
  • Service: Contiene la lógica de negocio (users.service.js).
  • Repository: Abstracción del acceso a datos (users.repository.js). Interactúa directamente con la DB usando pg.
  • Routes: Definición de endpoints (users.routes.js).

Estructura de Directorios

src/

├── core/           # Configuraciones, middlewares globales (logger, error handler)

├── modules/        # Módulos de negocio (users, auth, payments, sessions, etc.)

│   └── users/      # Ejemplo de módulo

│       ├── users.controller.js

│       ├── users.service.js

│       ├── users.repository.js

│       └── users.routes.js

├── routes/         # Agrupador principal de rutas

├── shared/         # Utilidades compartidas (response-handler, helpers)

├── app.js          # Configuración de Express

└── server.js       # Punto de entrada (Entrypoint)

Integraciones Externas Detectadas

  • AWS S3: Almacenamiento de archivos (multer-s3, aws-sdk).
  • GetStream: Chat y Video.
  • PayPal: Pasarela de pagos.
  • Google OAuth: Autenticación social.

2.3 Frontend App (apollo-service-app)

Aplicación SPA (Single Page Application) construida con Angular.

  • Framework: Angular (Versión moderna).
  • Estilos:
  • TailwindCSS: Framework de utilidades CSS.
  • PrimeNG / PrimeFlex: Componentes de UI ricos y sistema de grid.
  • Estructura de la Aplicación:
  • core: Servicios singleton, interceptores, guardas.
  • shared: Componentes reutilizables, pipes, directivas.
  • pages: Vistas principales (públicas y privadas).
  • dashboard: Módulo principal para usuarios autenticados.
  • Ruting:
  • Rutas públicas: Landing, Login, Registro.
  • Rutas protegidas (dashboard/*): Requieren AuthGuard.
  • Rutas especiales: video-call/:callId (carga perezosa/standalone).

3. Infraestructura y Despliegue

Cada servicio cuenta con su propia configuración de contenedorización.

  • Docker: Existen Dockerfile en cada servicio para construir las imágenes.
  • Docker Compose: Archivos docker-compose.yml para orquestación local de los servicios.
  • Makefiles: Scripts de automatización para tareas comunes (build, run, logs).

4. Flujos Clave del Sistema

  1. Registro y Onboarding:
  2. Usuario se registra -> API crea registro en users y profile.
  3. Si es tutor -> Llena tutor_profile, carga documentos (tutor_documents), define servicios (tutor_services).
  4. Verificación administrativa requerida para tutores.
  5. Agendamiento:
  6. Estudiante busca tutor (filtro por topics, precio, rating).
  7. Consulta availability del tutor.
  8. Crea una session en estado pending o confirmed tras pago.
  9. Video Llamada:
  10. Se utiliza integración con GetStream o similar para la sala de video.

Historial y duración se registran en sessions.

HU Apollo


Dashboard y Visualización de Datos 

HU-01: Mejorar la visualización de la distribución por país 

Como Administrador de Apollo, Quiero visualizar la distribución de usuarios por país mediante una gráfica optimizada en el dashboard, Para interpretar rápidamente el alcance geográfico de la plataforma. 

Criterios de Aceptación: 

  • Dado que el Administrador se encuentra en la pantalla principal del Dashboard, Cuando carga la sección "Distribución por País", Entonces el sistema debe mostrar un gráfico (mapa interactivo o barras) que agrupe a tutores y estudiantes por país con etiquetas claras y legibles. 

Ver imagen:  

Configuración Regional y Moneda 

HU-02: Definición de moneda según ubicación del usuario 

Como Usuario de la plataforma (Estudiante o Tutor), Quiero visualizar los precios en mi moneda local o en una moneda estándar, Para entender el valor real de los servicios sin hacer cálculos manuales. 

Criterios de Aceptación: 

  • Dado que un usuario ingresa a la plataforma desde un país específico (detectado por IP o perfil), Cuando visualiza un servicio o consultoría, Entonces el precio se muestra en la moneda local de ese país si está soportada. 
  • Dado que el sistema no puede detectar el país o la moneda no está soportada, Cuando se muestra el precio, Entonces el sistema debe mostrar el valor en Dólares Americanos (USD) por defecto. 

Gestión de Servicios (Tutores) 

HU-03: Restricción de visibilidad para tutores no aprobados 

Como Tutor en proceso de registro, Quiero que el sistema restrinja mi vista de servicios activos, Para no confundirme con funcionalidades que aún no puedo operar. 

Criterios de Aceptación: 

  • Dado un tutor con estado "Pendiente" o "Rechazado", Cuando intenta acceder a la lista de servicios ofertados, Entonces el sistema no debe mostrar ningún registro ni permitir la creación de nuevos servicios hasta su aprobación. 

Ver imagen Martin Delgado está rechazado y aparece 

 

HU-04: Fijación de precios en Dólares (USD) 

Como Tutor aprobado, Quiero establecer el valor de mis servicios en Dólares, Para estandarizar mi tarifa a nivel internacional. 

Criterios de Aceptación: 

  • Dado que el tutor está en el formulario "Crear Servicio", Cuando ingresa el monto en el campo "Valor", Entonces el sistema debe registrar y guardar dicho monto tratado explícitamente como USD (Dólares). 

 

 

HU-05: Soporte para decimales en el valor del servicio 

Como Tutor, Quiero poder ingresar puntos decimales en el precio de mis servicios, Para definir tarifas exactas (ej. 15.00 usd). 

Criterios de Aceptación: 

  • Dado que estoy ingresando el precio de un servicio, Cuando digito un valor que incluye un punto decimal (ej. "15.00"), Entonces el sistema debe permitir guardar el formulario sin mostrar errores de validación numérica. Debe mostrar la moneda por default. 

Nota: si se usa dólar por default el punto se agrega a los 1.000 dólares y no es necesario mostrar los dos decimales en un precio de 15 usd - 120 usd, par no confundir. 

 

 

HU-06: Visualización de Categoría en listado de servicios 

Como Tutor, Quiero ver la categoría a la que pertenece cada uno de mis servicios en la tabla resumen, Para organizar y distinguir mis ofertas rápidamente. 

Criterios de Aceptación: 

  • Dado que el tutor accede a la tabla de visualización de "Mis Servicios", Cuando la tabla carga los datos, Entonces debe existir una columna visible llamada "Categoría" que muestre el rubro asignado a cada servicio. 

 

 

Administración de Tutores 

HU-07 y HU-08: Inactivación segura de Tutores (Soft Delete) 

Como Administrador, Quiero inactivar tutores en lugar de eliminarlos, visualizando claramente a quién estoy modificando, Para preservar el historial de datos y evitar borrar usuarios incorrectos. 

Criterios de Aceptación: 

  • Dado que el Administrador selecciona la opción de quitar un tutor de la lista, Cuando aparece la ventana de confirmación, Entonces el modal debe mostrar explícitamente el Nombre del Tutor y un mensaje de advertencia. 
  • Dado que el Administrador confirma la acción en el modal, Cuando se ejecuta el proceso, Entonces el sistema debe cambiar el estado del tutor a "Inactivo" (Soft Delete) en lugar de borrar el registro de la base de datos. 

Perfil y Documentación 

HU-09: Simplificación de UI al subir imagen de perfil 

Como Usuario, Quiero una interfaz limpia al momento de cargar mi foto, Para saber claramente qué acciones tomar sin botones redundantes. 

Criterios de Aceptación: 

  • Dado que el usuario abre la opción "Subir Imagen" en su perfil, Cuando se despliega la interfaz de carga, Entonces solo deben mostrarse las opciones "Seleccionar archivo/Subir" o "Cancelar", eliminando los botones heredados de "Guardar Cambios" del formulario general. 

Está ya se hizo, pero es importante generar la HU. 

HU-10: Modal propio y corrección de carga de Cédula/Certificados 

Como Tutor, Quiero subir mis documentos (cédula, certificados) a través de una ventana emergente funcional, Para completar mi validación sin errores técnicos. 

Criterios de Aceptación: 

  • Dado que estoy en la sección de carga de documentos, Cuando intento subir el PDF de la cédula o certificados, Entonces debe abrirse la búsqueda de los archivos de manera directa.. 

Esta mostrando error al subir:  

  • Dado que selecciono un archivo PDF válido para certificados, Cuando escriba el nombre y cargue el archivo. Entonces el sistema debe procesar el archivo correctamente visualizarlo en el espacio para Certificados y no mostrar el mensaje de "Error al subir pdf" si no tiene fundamento. (un fundamento puede ser el peso, debe ser de 5 mb por ejemplo) 

HU-11: Integración de API de Países y Ciudades 

Como Usuario gestionando mi perfil, Quiero seleccionar mi ubicación de listas desplegables estandarizadas, Para asegurar que mi localización sea exacta y compatible con el sistema. 

Criterios de Aceptación: 

  • Dado que estoy editando mi información personal, Cuando selecciono un país de la lista (API externa), Entonces el campo "Ciudad" debe actualizarse automáticamente cargando solo las ciudades correspondientes a ese país. 

Ver imagen: aplica para todos los roles: 

 

Agenda y Disponibilidad 

HU-12: Identificación visual de disponibilidad 

Como Usuario (Estudiante buscando tutor), Quiero ver los días con disponibilidad resaltados con un color específico (Colocar mas llamativo), Para identificar rápidamente cuándo puedo agendar una consultoría. 

 

Nota: que se note la diferencia del que esté seleccionado y que también se resalta el color los días disponibles. El sistema es para personas mayores de 35, por tanto a esa edad empiezan a ahondar problemas visuales. 

 

Criterios de Aceptación: 

  • Dado que visualizo el calendario de un tutor, Cuando existen franjas horarias libres en una fecha, Entonces la celda de ese día debe tener un color de fondo distintivo (ej. verde) diferente a los días sin disponibilidad y de me debe permitir escoger la franja del servicio en función de lo que demora el servicio. 

Nota: el servicio demora 10 minutos, pero se muestra intervalos de 30 minutos. 

 

HU-13: Gestión de disponibilidad en reservas pendientes y corrección horaria 

Como Tutor y Sistema Apollo, Quiero que la disponibilidad se gestione dinámicamente según el estado de la reserva y que las horas sean exactas, Para maximizar las oportunidades de venta y evitar errores de agenda. 

Criterios de Aceptación: 

  • Dado que una solicitud de cita entra en estado "Pendiente" (pago no confirmado), Cuando transcurre un tiempo límite configurado (X horas) sin confirmación, Entonces el sistema debe liberar automáticamente ese horario, volviendo a estar disponible para otros usuarios. 
  • Dado que se agenda una asesoría, Cuando se guarda en la base de datos y se muestra en el calendario, Entonces la hora registrada debe coincidir exactamente con la hora seleccionada por el usuario (corrección de desfase horario). 

Notificaciones y UI General 

HU-14: Notificaciones por correo electrónico 

Como Usuario de Apollo, Quiero recibir correos electrónicos sobre mis interacciones, Para estar enterado de mis citas sin necesidad de estar logueado en la plataforma. 

Criterios de Aceptación: 

  • Dado que se crea, reprograma o cancela una consultoría, Cuando el evento se confirma en el sistema, Entonces se debe enviar automáticamente un correo electrónico tanto al Tutor como al Estudiante con los detalles actualizados. 

HU-15: Estandarización de estilos en botones 

Como Usuario, Quiero que todos los botones de la plataforma tengan una apariencia consistente, Para tener una experiencia de navegación visualmente agradable y profesional. 

Criterios de Aceptación: 

  • Dado cualquier pantalla de la plataforma Apollo, Cuando visualizo botones de acción (Guardar, Cancelar, Editar), Entonces todos deben cumplir con los estilos definidos en el UI Kit (color, radio del borde, tipografía y efecto hover). 

Nota: Así como agregar nuevo servicio en el fondo, en el modal cancelar y guardar no tiene estilos de botón.